#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>

#include<string.h>

#include<assert.h>

//模拟实现strncat
//目标空间足够大
//如果源空间长度小于要追加的长度，那就将源空间内容全部追加过去，包括\0
//如果源空间长度大于要追加的长度，那就追加所给长度，然后再加上一个\0
char* my_strncat(char* dest, const char* src, int count)
{
	assert(dest && src);
	char* ret = dest;
	while (*dest != '\0')
	{
		dest++;
	}
	while (count != 0)
	{
		if (*src != '\0')
		{
			*dest++ = *src++;
		}
		else
		{
			*dest = '\0';
			return ret;
		}
		count--;
	}
	*dest = '\0';
	return ret;
}
int main()
{
	char arr1[25] = "abcdef\0yyyyyyyy";
	char arr2[] = "xxx";
	int num = 0;
	scanf("%d", &num);
	char* ret = my_strncat(arr1, arr2, num);
	return 0;
}





////模拟实现strncpy
////目标空间足够大
////如果拷贝长度大于源头字符串长度，那么拷贝完之后全部补上0
//char* my_strncpy(char* dest, const char* src, int count)
//{
//	assert(dest && src);
//	char* ret = dest;
//	while (count != 0)
//	{
//		if (*src != '\0')
//		{
//			*dest++ = *src++;
//		}
//		else
//		{
//			*dest = 0;
//			dest++;
//		}
//		count--;
//	}
//	return ret;
//}
//int main()
//{
//	char arr1[20] = "abcdefg";
//	char arr2[] = "xxx";
//	int num = 0;
//	scanf("%d", &num);
//	char* ret = my_strncpy(arr1, arr2, num);
//	printf("%s", ret);
//	return 0;
//}